Creating computer animation displays involves constantly changing scenes and constantly changing relationships between objects in the 3D scene database. Therefore, when designing various computer animations, software systems are required that permit a user to specify the behavior of one variable (e.g.: an “output” variable) in relation to another variable (e.g.: an “input” variable). The input and output variables may also be called the “independent” and “dependent” parameters, respectively.
For example, a computer animator may desire the “light intensity” of an object to change over time such that the object in the animation becomes brighter or darker over time. In this particular case, “time” would be the input variable, and “brightness” would be the output variable. It is required in computer animation that various properties (e.g.: “brightness”, “height”, “strength of a force”, etc.) change over time. What is needed is computer software systems that permit an animator to quickly and easily set up (i.e.: create and edit) the relationship between a scalar input parameter (including, but not limited to “time”) and a scalar output parameter (including, but not limited to “brightness”, “height”, “strength of a force”, etc.).
As stated above, computer animators typically set up relationships between time (as the input parameter) and some other scalar output parameter (e.g.: brightness, height, strength of force, etc). However, it is to be understood that it is not always desirable to use “time” as the input parameter. It may instead be more desirable to use a different input parameter. For example, it may be desirable to define movement in the limb of an animated character by defining movement of one part of the limb (e.g.: the lower part of the leg) with respect to the position of another part of the limb (e.g.: the upper part of the leg). In this example, it would be easy for the animator to visualize and set up the movement of the limb.
Unfortunately, existing software animation programs lack sufficient flexibility. This is due to the fact that relationships between input and output variables in standard animation curves are generally defined as one-dimensional piecewise smooth cubics, with each segment of the curve having the form:F(t)=a0+a1t+a2t2+a3t3 
Segments of such curves can be defined on a 2D plot which gives key values for the curve at specified times. The shape of the interpolating curve (i.e.: the curve between the key values) can be determined by various techniques including B-Splines, NURBS, slope handles with one degree of freedom, or by composite controls which indirectly control the free parameters of the cubic. Such systems offer limited flexibility and each has properties that make them non-intuitive for animators. For example, B-splines use piecewise cubics to solve intermediate values between their control points. Unfortunately, it is difficult to control how such line segments interpolate because such B-spline curves do not always pass exactly through the control points. This makes these systems somewhat more difficult for an animator to operate than the more familiar Bezier splines with control points and handles with two degrees of freedom employed by most 2D drawing programs.
Therefore, the need exists for a software system that permits a user to easily set up (i.e.: create and edit) the relationship between any input parameter and any output parameter.
In addition, the need exists for the animator to be able to select the value of an output parameter at certain input parameter values, and have the software interpolate the output values therebetween. For example, the animator may wish to set various brightness levels for an on screen object at certain time intervals (e.g.: at 1 second, 5 seconds, etc.) and have the software automatically calculate (and continuously display) the on screen brightness of the object as it varies over time.
In addition, existing systems allow animators to set up input/output relationships and provide interpolation of values between on screen control points. However, it has not yet been possible to provide a control point handle that has two degrees of freedom.